//该文件是对axios的第二次封装
//目的是为了让整个姓名发送ajax请求时，通用的配置不用一遍遍的重复编写

//1.引入axios模块

import axios from 'axios'

//引入进度条效果
import 'nprogress/nprogress.css'
import NProress from 'nprogress'

// 创建axios实例对象 以后整个项目都用这个实例发送请求

const ajax = axios.create({
  //基础地址会自动拼接在请求地址前面
  baseURL: '/api',
  
  timeout: 5000, //设置请求超时时间
  
})

//设置请求拦截器
//在发送请求的时候如果出了错误就返回一个自定义的
ajax.interceptors.request.use(config => {
  NProress.start()//启用进度条
  return config
})

//4.设置响应拦截器
//如果请求回来的发生错误，就响应出了什么错误，如果响应成功就在控制台展示数据
ajax.interceptors.response.use(
  response => {
    NProress.done() // 结束进度条
    console.log('响应成功');
    return response.data
  },
  error => {
    NProress.done() // 结束进度条
    console.log('响应失败');
    //返回失败异步的Promise实例  目的是走程序员自己设置的错误信息
    return Promise.reject(new Error(error.message))
  }
)

//5. 导出对象

export default ajax